import { TokenManager } from '../utils/request';
import { certificationManager } from '../utils/certification';
import { useUserStore } from '../store/modules/user';

// 企业认证状态检查
const checkEnterpriseCertification = async () => {
  try {
    // 首先检查是否有有效的token
    const token = TokenManager.getAccessToken();
    if (!token) {
      return false;
    }

    // 获取认证状态
    const status = await certificationManager.getStatus();
    
    // 只有已通过认证的用户才能访问其他页面
    if (status.status === 'approved') {
      return true;
    }
    
    // 其他状态（pending_review, rejected, unsubmitted）都需要跳转到认证页面
    return false;
  } catch (error) {
    console.warn('企业认证状态检查失败:', error.message);
    // 如果API调用失败，默认返回false，让用户进入认证页面
    return false;
  }
};

export const authGuard = async (to, from, next) => {
  // 使用TokenManager检查token
  const accessToken = TokenManager.getAccessToken();
  const userType = TokenManager.getUserType();
  
  // 检查是否需要认证
  if (to.meta.requiresAuth && !accessToken) {
    next('/login');
    return;
  }
  
  // 检查角色权限
  if (to.meta.role && userType !== to.meta.role) {
    next('/');
    return;
  }
  
  // 企业用户认证检查
  if (to.meta.role === 'enterprise' && userType === 'enterprise') {
    // 如果访问的是认证页面或认证表单页面，直接通过
    if (to.name === 'enterprise-certification' || to.name === 'enterprise-certification-form') {
      next();
      return;
    }
    
    try {
      // 检查企业认证状态
      const isCertified = await checkEnterpriseCertification();
      
      if (isCertified) {
        // 已认证的企业用户，可以访问所有企业端页面
        next();
        return;
      } else {
        // 未认证的企业用户，强制跳转到认证表单页面
        next({ name: 'enterprise-certification-form' });
        return;
      }
    } catch (error) {
      console.error('企业认证检查失败:', error);
      // 如果认证检查失败，为了安全起见，跳转到认证表单页面
      if (to.name !== 'enterprise-certification-form' && to.name !== 'enterprise-certification') {
        next({ name: 'enterprise-certification-form' });
        return;
      }
    }
  }
  
  // 其他情况正常通过
  next();
};